package com.happyghost.juc.synchronizeddemo;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class SynchroniedDemo {

    public void method1() {
        synchronized (this) {
            for (int i = 0; i < 5; i++) {
                System.out.print(" " + i);
            }
        }
    }

    /**
     * 使用 ExecutorService 执行了两个线程，由于调用的是同一个对象的同步代码块，
     * 因此这两个线程会进行同步，当一个线程进入同步语句块时，另一个线程就必须等待。
     */
    public static void main(String[] args) {
        SynchroniedDemo demo1 = new SynchroniedDemo();
        ExecutorService executorService = Executors.newCachedThreadPool();

        executorService.execute(() -> demo1.method1());
        executorService.execute(() -> demo1.method1());

        //result
//        0 1 2 3 4 0 1 2 3 4
    }
}
